有哪些常见的免杀技术?
免杀技术指的是一种能使病毒木马免于被杀毒软件查杀的技术。常见的免杀技术包括:
修改特征码
所谓特征码,就是防毒软件从病毒样本中提取的不超过64字节且能代表病毒特征的十六进制代码。主要有单一特征码、多重特征码和复合特征码这三种类型。既然杀毒软件在最开始时,使用了病毒特征码概念,那么我们可以通过修改病毒特征码的方式躲过杀软扫描。
花指令免杀
花指令免杀。花指令是设计者特意构思的,它最根本的思想就是希望在反汇编时出错,并为反病毒人员设下陷阱。而如果花指令可以成功保护软件真正代码不被轻易反汇编,那么对于反病毒软件来说,它所检测的自然也就不是木马文件中真正的内容了。花指令可能会用到各种指令:例如jmp, call, ret的一些堆栈技巧,位置运算等等。
加壳免杀
软件加壳其实也可以称为软件加密(或软件压缩),只是加密(或压缩)的方式与目的不一样罢了。壳就是软件所增加的保护,并不会破坏里面的程序结构,当我们运行这个加壳的程序时,系统首先会运行程序里的壳,然后由壳将加密的程序逐步还原到内存中,最后运行程序。
加壳虽然对于特征码绕过有非常好的效果,加密壳基本上可以把特征码全部掩盖,但是缺点也非常的明显,因为壳自己也有特征。在某些比较流氓的国产杀软的检测方式下,主流的壳如VMP, Themida等,一旦被检测到加壳直接弹框告诉你这玩意儿有问题,虽然很直接,但是还是挺有效的。有些情况下,有的常见版本的壳会被直接脱掉分析。
内存免杀
内存免杀技术大多数只需要使用“ShellCode加载器”就可以达到很好的免杀效果,内存免杀后门大部分基于“VirtualAlloc”函数申请内存,使用shellcode加载器将shellcode直接加载进内存,避免文件落地就可以绕过文件扫描。
二次编译
metasploit的msfvenom提供了多种格式的payload和encoder,生成的shellcode也为二次加工提供了方便,但是也被各大厂商盯得死死的。
而shikata_ga_nai是msf中唯一excellent的编码器,这种多态编码技术使得每次生成的攻击载荷文件是不一样的,编码和解码也都是不一样。还可以利用管道进行多重编码进行免杀。
目前msfvenom的encoder特征基本都进入了杀软的漏洞库,很难实现单一encoder编码而绕过杀软,所以对shellcode进行进一步修改编译成了msf免杀的主流。互联网上有很多借助于C、C#、python等语言对shellcode进行二次编码从而达到免杀的效果。
资源修改
有些杀软会设置有扫描白名单,比如之前把程序图标替换为360安全卫士图标就能过360的查杀。
- 加资源
使用ResHacker对文件进行资源操作,找来多个正常软件,将它们的资源加入到自己软件,如图片,版本信息,对话框等。
- 替换资源
使用ResHacker替换无用的资源(Version等)。
- 加签名
使用签名伪造工具,将正常软件的签名信息加入到自己软件中。